import {Body, Controller, Get, Param, ParseIntPipe, Post, Render, Request, Response} from '@nestjs/common';
import {Query} from "@nestjs/common/decorators/http/route-params.decorator"
import any = jasmine.any

@Controller('user')
export class UserController {
    // 批量获取全部的参数, 接收到的是一个对象, 你传递什么我就接收什么
    // @Get()
    // userList(
    //     @Query() query: any
    // ): string {
    //     console.log("query 123--->", query);
    //     return "用户列表"
    // }


    // 选择性接收 Query() 中携带的参数, 并且判断参数类型
    @Get()
    userList(
        @Query('age', new ParseIntPipe()) age: number,
        @Query('name') name: string
    ): string {
        // 我只需要接收 age 和 name字段,别的你多传递, 我也不做处理
        console.log("age, name ==>", age, name);
        return "用户列表"
    }

    // @Get(":id")
    // userInfo(
    //     @Param() params: any
    // ) {
    //     console.log("params ---->>", params);
    //     return "用户详情"
    // }

    @Post()
    addUser(
        @Body() body: any
    ) {
        // 这种写法适合大规模提交参数,自己又不想一个一个校验
        console.log(body);
        return body
    }

    @Get("a")
    index(@Request() req) {
        console.log(req.cookies.name, '当前的cookie');
        return '主页';
    }

    @Get('login')
    // @Render('login') // 渲染views里面的ejs模板
    loginPage(@Response() res) {
        // 这里的数据到时候讲到数据库，服务层的时候直接从数据库拉取数据,现在先写个假数据
        // 如果使使用了res就不能使用return，必须使用send
        res.cookie('name', 'hello', {maxAge: 1000 * 50, httpOnly: true});
        res.send('登录页面');
        // return {'title': '登录页面'} // 返回给ejs模板的数据
    }

    @Post('login')
    login(@Body() body, @Response() res) {
        console.log("Post请求方法 ---->>", body); // 获取表单中提交的数据
        res.redirect('/user'); // 重定向到用户首页
        // 注意如果在控制器函数中使用了@Response()就不能使用return返回值
    }

}

